package com.redepronik.negosys.rrhh.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * The persistent class for the tipocliente database table.
 * 
 */
@Entity
@Table(schema = "rrhh", name = "tipocliente")
@NamedQuery(name = "Tipocliente.findAll", query = "SELECT t FROM Tipocliente t")
public class Tipocliente implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(allocationSize = 1, name = "TIPOCLIENTE_TIPOCLIENTEID_GENERATOR", sequenceName = "RRHH.TIPOCLIENTE_TIPOCLIENTEID_SEQ")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TIPOCLIENTE_TIPOCLIENTEID_GENERATOR")
	@Column(unique = true, nullable = false)
	private Integer tipoclienteid;

	@Column(nullable = false)
	private Boolean activo;

	@Column(nullable = false, precision = 13, scale = 10)
	private BigDecimal descuento;

	@Column(nullable = false, length = 50)
	private String nombre;

	// bi-directional many-to-one association to Cliente
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "tipocliente")
	private List<Cliente> clientes;

	// bi-directional many-to-one association to Precio
	@ManyToOne
	@JoinColumn(name = "precioid", nullable = false)
	private Precio precio;

	public Tipocliente() {
	}

	public Cliente addCliente(Cliente cliente) {
		getClientes().add(cliente);
		cliente.setTipocliente(this);

		return cliente;
	}

	public Boolean getActivo() {
		return this.activo;
	}

	public List<Cliente> getClientes() {
		return this.clientes;
	}

	public BigDecimal getDescuento() {
		return this.descuento;
	}

	public String getNombre() {
		return this.nombre;
	}

	public Precio getPrecio() {
		return this.precio;
	}

	public Integer getTipoclienteid() {
		return this.tipoclienteid;
	}

	public Cliente removeCliente(Cliente cliente) {
		getClientes().remove(cliente);
		cliente.setTipocliente(null);

		return cliente;
	}

	public void setActivo(Boolean activo) {
		this.activo = activo;
	}

	public void setClientes(List<Cliente> clientes) {
		this.clientes = clientes;
	}

	public void setDescuento(BigDecimal descuento) {
		this.descuento = descuento;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public void setPrecio(Precio precio) {
		this.precio = precio;
	}

	public void setTipoclienteid(Integer tipoclienteid) {
		this.tipoclienteid = tipoclienteid;
	}

}